package config

import (
	"github.com/sirupsen/logrus"
	"github.com/spf13/viper"
	"k8s.io/client-go/kubernetes"
)

// 定义时间格式
const (
	TimeFormat                  string = "2020-01-02 15:02:00"
	ClusterConfigSecretLabelKey string = "kubeasy.com/cluster.metadata"
	ClusterCOnfigSecretLabelVal string = "true"
)

// 定义全局变量
var (
	Port              string
	JwtSignKey        string
	JwtExpTime        int64
	Username          string
	Password          string
	MetadataNamespace string
	//inCluster客户端
	InClusterClientSet *kubernetes.Clientset
	ClusterKubeconfig  map[string]string
)

type ReturnData struct {
	Status  int                    `json:"status"`
	Message string                 `json:"message"`
	Data    map[string]interface{} `json:"data"`
}

// NewReturnData 构造函数
func NewReturnData() ReturnData {
	returnData := ReturnData{}
	returnData.Status = 200
	data := make(map[string]interface{})
	returnData.Data = data
	return returnData
}

func init() {
	// 设置日志级别
	viper.SetDefault("LOG_LEVEL", "debug")
	// 设置端口号
	viper.SetDefault("PORT", ":8080")
	// 设置jwt加密的secret
	viper.SetDefault("JWT_SIGN_KEY", "duck")
	// 设置过期时间
	viper.SetDefault("JWT_EXP_TIME", 120)
	// 设置用户名和密码
	viper.SetDefault("USERNAME", "dot")
	viper.SetDefault("PASSWORD", "bypass")
	// 设置元数据命名空间
	viper.SetDefault("META_NAMESPACE", "metadata")

	logLevel := viper.GetString("LOG_LEVEL")
	Port = viper.GetString("PORT")
	JwtSignKey = viper.GetString("JWT_SIGN_KEY")
	JwtExpTime = viper.GetInt64("JWT_EXP_TIME")
	Username = viper.GetString("USERNAME")
	Password = viper.GetString("PASSWORD")
	MetadataNamespace = viper.GetString("META_NAMESPACE")
	initLogLevel(logLevel)
}

func initLogLevel(loglevel string) {
	if loglevel == "debug" {
		logrus.SetLevel(logrus.DebugLevel)
	} else {
		logrus.SetLevel(logrus.InfoLevel)
	}
	// 文件名和行号
	logrus.SetReportCaller(true)
	// 格式改为json
	logrus.SetFormatter(&logrus.JSONFormatter{TimestampFormat: TimeFormat})
}
